<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>更换头像</title>
    <link rel="stylesheet" href="/assets/lib/layui/css/layui.css">
    <link rel="stylesheet" href="/assets/lib/cropper/cropper.css">
    <link rel="stylesheet" href="/assets/css/personal/updateImage.css">
</head>

<body>

    <div class="layui-card">
        <div class="layui-card-header">更换头像</div>
        <div class="layui-card-body">
            <!-- 第一行的图片裁剪和预览区域 -->
            <div class="row1">
                <!-- 图片裁剪区域 -->
                <div class="cropper-box">
                    <!-- 这个 img 标签很重要，将来会把它初始化为裁剪区域 -->
                    <input type="file" id="file" accept="image/png,image/jpeg,image/bmp" style="display: none;">
                    <img id="image" src="/assets/images/sample.jpg" />
                </div>
                <!-- 图片的预览区域 -->
                <div class="preview-box">
                    <div>
                        <!-- 宽高为 100px 的预览区域 -->
                        <div class="img-preview w100"></div>
                        <p class="size">100 x 100</p>
                    </div>
                    <div>
                        <!-- 宽高为 50px 的预览区域 -->
                        <div class="img-preview w50"></div>
                        <p class="size">50 x 50</p>
                    </div>
                </div>
            </div>

            <!-- 第二行的按钮区域 -->
            <div class="row2">
                <button type="button" class="layui-btn" id="btnChooseImg">选择图片</button>
                <button type="button" class="layui-btn layui-btn-danger" id="updateAvatar">上传头像</button>
            </div>
        </div>
    </div>

    <script src="/assets/lib/layui/layui.all.js"></script>
    <script src="/assets/lib/jquery.js"></script>
    <script src="/assets/lib/cropper/Cropper.js"></script>
    <script src="/assets/lib/cropper/jquery-cropper.js"></script>
    <script src="/assets/js/baseAPI.js"></script>
    <script>
        $(function () {
            // 1. 获取裁剪区域
            const $image = $('#image')

            // 2. 定义配置对象
            const options = {
                // 纵横比
                aspectRatio: 1,
                // 指定预览区域
                preview: '.img-preview',
                // 视图模式
                viewMode: 2
            }
            //3.创建裁剪区域
            $image.cropper(options)

            // 为选择图片的按钮绑定点击事件处理函数
            $('#btnChooseImg').on('click', function () {
                // 模拟文件选择框的点击事件
                $('#file').click()
            })

            // 为文件选择框绑定 change 事件
            $('#file').on('change', function (e) {
                //1.拿到用户选择的文件
                const files = e.target.files
                if (files.length === 0) return
                //2.将文件,转化为路径
                const imgURL = URL.createObjectURL(files[0])
                //3.重新初始化裁剪区域
                $image
                    .cropper('destroy')  //销毁旧的裁剪区域
                    .attr('src', imgURL) //重新设置图片路径
                    .cropper(options)    //重新初始化裁剪区域
            })

            // 为上传头像的按钮绑定点击事件处理函数
            $('#updateAvatar').on('click', function () {
                var dataURL = $image
                    .cropper('getCroppedCanvas', {
                        // 创建一个 Canvas 画布
                        width: 100,
                        height: 100
                    })
                    .toDataURL('image/png') // 1.将 Canvas 画布上的内容，转化为 base64 格式的字符串
                $.ajax({
                    type: 'post',
                    url: '/my/update/avatar',
                    data: {
                        avatar: dataURL
                    },
                    success: function (res) {
                        layer.msg(res.message)
                        window.parent.getUserInfo()
                    }
                })
            })
        })

    </script>
</body>

</html>